﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using EpsiRisk.AffichageJeu;
using EpsiRisk.DonneesPlateau;
using EpsiRisk.Plateaux;
using System.Globalization;
using System.Threading;

namespace EpsiRisk.MoteurJeu
{
    public static class ClassDonneesGlobales
    {
        public static ClassPlateau plateauCourant;

        public static List<ClassJoueur> listeJoueurs;

        public static ClassCurseur curseurStandard;

        public static ClassDes des;

        public static ClassZoneMenu zoneMenu;

        public static ClassZoneJeu zoneJeu;

        public static ClassZoneContextuelle zoneContextuelle;

        public static ClassZoneSelectionAttaquant zoneSelectionAttaquant;

        public static ClassZoneLancementDes zoneLancementDes;

        public static ClassZoneAffectationRenforts zoneAffectationRenforts;

        public static ClassZoneDeplacement zoneDeplacement;

        public static ClassZoneMiniMap zoneMiniMap;

        public static ClassZoneOverlayMessage zoneOverlayMessage;

        public static ClassZonePopupMenu zonePopupMenu;

        public static ClassZoneNouveauJeu zoneNouveauJeu;

        public static ClassZoneMission zoneMission;

        //public static ClassMoteurIA moteurIA;

        

        /// <summary>
        /// police de caractère
        /// </summary>
        public static SpriteFont SpriteTxt;

        public static void initialiser(ContentManager content)
        {
            //son
            ClassSon.initialiser(content);
            //curseur
            curseurStandard = new ClassCurseur(content.Load<Texture2D>("Sprites/curseurStandard"));
            //font
            SpriteTxt = content.Load<SpriteFont>("Fonts/Kootenay");

            //ZONES
            zoneMenu = new ClassZoneMenu();
            zoneMenu.initialiser(content);
            zoneJeu = new ClassZoneJeu();
            zoneJeu.initialiser(content);
            zoneContextuelle = new ClassZoneContextuelle();
            zoneContextuelle.initialiser(content);
            zoneLancementDes = new ClassZoneLancementDes();
            zoneLancementDes.initialiser(content);
            zoneAffectationRenforts = new ClassZoneAffectationRenforts();
            zoneAffectationRenforts.initialiser(content);
            zoneDeplacement = new ClassZoneDeplacement();
            zoneDeplacement.initialiser(content);
            zoneMiniMap = new ClassZoneMiniMap();
            zoneMiniMap.initialiser(content);
            zoneOverlayMessage = new ClassZoneOverlayMessage();
            zoneOverlayMessage.initialiser(content);
            zonePopupMenu = new ClassZonePopupMenu();
            zonePopupMenu.initialiser(content);
            zoneNouveauJeu = new ClassZoneNouveauJeu();
            zoneNouveauJeu.initialiser(content);
            zoneSelectionAttaquant = new ClassZoneSelectionAttaquant();
            zoneSelectionAttaquant.initialiser(content);
            zoneMission = new ClassZoneMission();
            zoneMission.initialiser(content);
            //moteurIA = new ClassMoteurIA();
            

            //CLASSES D'AFFICHAGE
            ClassAffichageDe.initialiser(content);

            //Objets du jeu
            des = new ClassDes(content);

            plateauCourant = ClassGenerateurPlateaux.genererPlateau();
            zoneJeu.initialiser(content);//recharge la zone de jeu

            //Test sauvegarde
            plateauCourant.sauvegardePlateau();
            //Test import
            //plateauCourant = plateauCourant.chargementPlateau("Plateau" + DateTime.Today.ToString("d", new CultureInfo("de-DE")) + ".xml");
            //plateauCourant.loadSprites(content);//recharger les donnees

            // Détection de la map
            ClassDetectionClicTerritoire.initialiser(content);
        }
    }
}
